package com.mzpai.util;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: guguanfei
 * @Time: 2019-06-27 10:40
 * 数据分批 将一个list 按照一定条数拆分成几个list存放在list里
 * @Description:
 */
public class SplitBatch {
	
	 public static <T> List<List<T>> split(List<T> resList, int count){
		 
		 if (resList == null || count < 1){
			 return null;
		 } 
		 List<List<T>> ret = new ArrayList<List<T>>();  
         int size = resList.size();     
         if (size <= count) {  
             // 数据量不足count指定的大小  
             ret.add(resList);  
         }else{
        	 int pre = size / count;  
             int last = size % count; 
             // 前面pre个集合，每个大小都是count个元素  
             for(int i = 0; i < pre; i++){
            	 List<T> itemList = new ArrayList<T>();
            	 for(int j = 0; j < count; j++){
            		 itemList.add(resList.get(i * count + j));
            	 }
            	 ret.add(itemList);
             }
            // last的进行处理  
            if (last > 0) {
		        List<T> itemList = new ArrayList<T>();
				for (int i = 0; i < last; i++) {
				  itemList.add(resList.get(pre * count + i));
				}
				ret.add(itemList);
            }
         }
         return ret; 
	 }
	 
	 public static void main(String[] args) {
		 List<String> list =new ArrayList<String>();
		 list.add("1111");
		 list.add("2222");
		 list.add("333333");
		 list.add("444444");
		 list.add("555555");
		 list.add("66666");
		 list.add("77777");
		 List<List<String>> listresult= SplitBatch.split(list,3);
         System.out.println(listresult.size());
	}
}
